Python 快速搭建 RESTful API

您所在的位置:网站首页 python rest服务器 Python 快速搭建 RESTful API

Python 快速搭建 RESTful API

2024-04-24 19:53| 来源: 网络整理| 查看: 265

RESTful  是什么?

RESTful 是一种网络应用程序的开发方式或设计风格,基于 HTTP 网络协议,可以使用 XML 或 JSON 格式定义,目前使用最多的是 JSON 格式,因为它相比 XML 体积更小,传输速度更快,承载内容更多。

RESTful  应用场景

RESTful  开发方式大多应用在前端和后端开发分离的环境中,前端和后端分离带来的最大好处就是项目耦合度得到降低,前端通过 RESTful  API 接口服务完成对数据的增删改查,也就是常说的对数据库的 CRUD

在 Python 中如何实现快速高效地开发 RESTful API 呢?

在 Python 中有很多 RESTful Web 框架,如 Django REST framework,Flask-RESTful 等等。

Django REST framework 是一个功能强大且灵活的 REST Web API 框架,包含 OAuth1a、OAuth2身份验证策略,支持 ORM 和非 ORM 数据源的序列化,使用基于函数的常规视图实现自定义你所需要的功能,有广泛的文档资料和社区支持。

Flask-RESTful 是一个非常轻量级,能够快速上手的 RESTful Web API 框架。可以快速搭建并运行完成一个  RESTful  API 服务。相对于 Django REST framework 是比较轻量级的 RESTful API 框架。

那还有比这俩框架更好用,更容易上手的 RESTful  API 框架吗?

答案是 FastAPI ,从 FastAPI 的名字就可以看出,FastAPI 最大的特点那就是快,上手快,运行速度更快,到底有多快,接下来我们一起来探究下。

FastAPI 是一个高性能的异步Web框架,具有并发性能强、容错性能强,快速上手,自动生成交互式文档,堪称目前最快最高效的 Web 框架。

首先安装  FastAPI 和相关的运行环境

pip install fastapi,运行命令安装 FastAPI,如下图,表示安装成功。

pip install uvicorn,安装 uvicorn Web 服务框架。Uvicorn 一个基于 asyncio 开发的一个轻量级高效的 Web 服务器框架,Uvicorn 设计的初衷是使用 uvloop 和 httptools 实现一个极速的 asyncio 服务器;实现一个基于 ASGI(异步服务器网关接口)的最小的应用程序接口。

在 PyCharm 中新建一个 Python 项目

新建一个 main.py 文件,编写 RESTful  API 服务。在 .NET Core 或 Java 中,创建一个接口,通常命名为 xxxController,比如 UserController。当然,这只是一种命名方式,如果你喜欢这样命名,这也可以这样命名。

# 根目录@app.get("/")def read_root(): return {"Hello": "World"}

# 获取 [email protected]("/items/{item_id}")def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q}

# 添加 [email protected]("/add_item")def add_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q}

# 删除 [email protected]("/delete_item")def delete_item(item_id: int): msg = str(item_id) + "删除成功" return {msg}

在 main.py 中,简单实现四个接口,看看运行完成后是什么样。

在 PyCharm 控制台 cd 到 main.py 目录中,输入命令 uvicorn main:app --reload 运行 FastAPI,显示如下信息,表示运行完成。在浏览器中打开 127.0.0.1:8080 查看运行完成后的 Fast API。

运行结果如下。当我第一次运行完成后,我有点怀疑这是不是真的,是不是我在浏览器中输入的链接地址错误了。因为我对 Swagger 不管在 .NET Core 或 Java 中都没有这么简单,在这里,我基本没有对 Swagger 文档做任何配置,就可以显示一个 API 文档了。这样一来,又帮助开发者节约了一部分时间,在开发中,最浪费时间的工作就是在这种开发环境配置。

自定义 OpenAPI

在上图中,可以看到,API 标题,API 描述、版本等信息都修改成了我这边测试的信息,怎么修改的呢?

直接贴代码

def custom_openapi(): # 判断缓存 if app.openapi_schema: return app.openapi_schema openapi_schema = get_openapi( title="我的 FastAPI", version="1.0.0", description="API 描述", routes=app.routes, ) openapi_schema["info"]["x-logo"] = { "url": "https://fastapi.tiangolo.com/img/logo-margin/logo-teal.png" } # 将 .openapi_schema 用作缓存,存储生成的模式,这样,避免每次打开文档时都去重新生成 # 它只会生成一次。 app.openapi_schema = openapi_schema return app.openapi_schema

当然,还有很多相关的自定义,这里就不一一讲解了。

下面给大家介绍一个比较好用的功能

本地断网情况下继续使用 OpenApi

首先,安装 aiofiles 库,执行命令 pip install aiofiles

然后在本地项目中新建一个存放资源文件的文件夹,放入这三个资源文件,资源文件可以通过 FastAPI 官方网站上获取,也可以私信我获取。

导入相关的包,和配置 static 目录,

docs 页面配置

配置完成后重新运行项目,断开网络连接,你会发现在没有网络连接的情况下也居然可以访问我们写好的 RESTful  API,这个特点在内部封闭式开发中或突然断开网络连接情况下,是非常友好的一个功能。

FastAPI 非常强大,还有很多好的功能等着我们去发现和使用,希望本篇文章能让你对 FastAPI 有初步的认识与了解。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3